void
_gtk_text_shadow_paint_layout (GtkShadow *shadow,
cairo_t *cr,
- gdouble x,
- gdouble y,
PangoLayout *layout)
{
GList *l;
GtkShadowElement *element;
+ if (!cairo_has_current_point (cr))
+ cairo_move_to (cr, 0, 0);
+
/* render shadows starting from the last one,
* and the others on top.
*/
cairo_save (cr);
- cairo_move_to (cr, x + element->hoffset, y + element->voffset);
+ cairo_rel_move_to (cr, element->hoffset, element->voffset);
gdk_cairo_set_source_rgba (cr, &element->color);
_gtk_pango_fill_layout (cr, layout);
+ cairo_rel_move_to (cr, -element->hoffset, -element->voffset);
cairo_restore (cr);
}
}
"text-shadow", &text_shadow,
NULL);
+ prepare_context_for_layout (cr, x, y, layout);
+
if (text_shadow != NULL)
{
- _gtk_text_shadow_paint_layout (text_shadow, cr, x, y, layout);
+ _gtk_text_shadow_paint_layout (text_shadow, cr, layout);
_gtk_shadow_unref (text_shadow);
}
- prepare_context_for_layout (cr, x, y, layout);
gdk_cairo_set_source_rgba (cr, &fg_color);
pango_cairo_show_layout (cr, layout);